// 导入数据库操作模块
const db = require('../db/index')

// 根据token获取购物车的处理函数
exports.getCartList = (req, res) => {
    //  定义根据id查询商品详细信息的SQL语句
    // 定义根据用户id查询用户购物车中商品id
    const sql = 'select g.goods_id,g.goods_name,g.goods_img,g.goods_price,g.goods_title,g.goods_contents,c.goods_num,c.id ,c.isChecked from  ev_goods as  g left outer  join ev_cart as c on g.goods_id=c.goods_id where user_id=?'
    // 调用db.query()执行SQL语句
    db.query(sql, req.user.id, (err, results) => {
        // 执行SQL语句失败
        if (err) return res.cc(err)
        //购物车中商品id和数量获取成功
        res.send({
            code: 200,
            message: '购物车商品获取成功',
            data: results
        })

    })
}
// 加入和更新购物车的处理函数
exports.updateCart = (req, res) => {
    const sql = 'select c.* from  ev_cart as  c left outer  join ev_goods as g on g.goods_id=c.goods_id where user_id=? and g.goods_id=?'
    // 调用db.query()执行SQL语句执行查重操作
    db.query(sql, [req.user.id, req.params.id, req.params.num], (err, results) => {
        const user_id = req.user.id
        const goods_id = req.params.id
        const goods_num = req.params.num
        const obj = { user_id, goods_id, goods_num }
        // res.cc(obj)
        // 执行SQL语句失败
        if (err) return res.cc(err)
        // // 数据库没有该商品就加一行，有一行就设置num+1，大于一行就报错
        if (results.length === 0) {
            // 插入数据
            const sql = 'insert into ev_cart set ?'
            // // 调用db.query()执行SQL语句执行查重操作
            db.query(sql, obj, (err, results2) => {
                // 执行SQL语句失败
                if (err) return res.cc(err)
                // 执行SQL语句成功,但是影响行数不等于1(影响了数据库多条数据)
                if (results.affectedRows > 1) return res.cc('加入购物车出错！')
                // 新增文章分类成功
                res.send({
                    code: 200,
                    message: '加入购物车成功',
                })
            })
        } else if (results.length === 1) {
            const id = results[0].id || []
            // 修改该条数据的num，使其+req.body.num
            const sql = 'update ev_cart set goods_num=goods_num + ? where id=?'
            db.query(sql, [goods_num, id], (err, results3) => {
                // 执行SQL语句失败
                if (err) return res.cc(err)
                // 执行SQL语句成功,但是影响行数不等于1(影响了数据库多条数据)
                if (results3.affectedRows !== 1) return res.cc('更新购物车出错！')
                res.send({
                    code: 200,
                    message: '更新购物车商品数成功',
                })
            })
        }
        else return res.cc(err)
    })
}
// 购物车删除的处理函数
exports.deleteCart = (req, res) => {
    const sql = 'delete from  ev_cart  where user_id=? and goods_id=?'
    // 调用db.query()执行SQL语句执行
    db.query(sql, [req.user.id, req.params.id], (err, results) => {
        // 执行SQL语句失败
        if (err) return res.cc(err)
        // 执行SQL语句成功,但是影响行数小于1
        if (results.affectedRows < 1) return res.cc('删除失败！')
        // 购物车删除分类成功
        res.send({
            code: 200,
            message: '删除成功',
        })
    })
}

// 购物车商品切换状态的处理函数
exports.checkCart = (req, res) => {
    const isChecked = req.params.isChecked;
    if (isChecked == 1) {
        const sql = 'update  ev_cart set isChecked=1 where user_id=? and goods_id=?'
        db.query(sql, [req.user.id, req.params.id], (err, results) => {
            // 执行SQL语句失败
            if (err) return res.cc(err)
            // 商品状态切换成功
            res.send({
                code: 200,
                message: '状态切换为选中',
            })
        })
    } else if (isChecked == 0) {
        const sql = 'update ev_cart set isChecked=0 where user_id=? and goods_id=?'
        db.query(sql, [req.user.id, req.params.id], (err, results) => {
            // 执行SQL语句失败
            if (err) return res.cc(err)
            // 商品状态切换成功
            res.send({
                code: 200,
                message: '状态切换为未选中',
            })
        })
    }
    // 调用db.query()执行SQL语句执行

}


